Jerry's Log

Instruction Format

contents

명령어 형식(Instruction Format) 은 기계어 명령어 내 비트들의 레이아웃 또는 청사진을 정의합니다. 이는 CPU의 제어 장치(Control Unit)가 이진 시퀀스를 해석하는 방식을 결정하며, 어떤 연산을 수행해야 하는지, 필요한 데이터를 어디서 찾아야 하는지, 그리고 어떻게 처리해야 하는지를 알려줍니다.

명령어 형식의 설계는 프로세서의 명령어 집합 구조(ISA)에서 중요한 구성 요소이며, 하드웨어의 복잡성과 소프트웨어의 효율성 사이의 끊임없는 트레이드오프를 나타냅니다.


기계어 명령어의 구성 요소 🧱

모든 명령어 형식은 CPU가 순차적으로 해독하는 몇 가지 기본 필드로 구성됩니다.

1. 연산 코드 (Opcode)

2. 오퍼랜드 및 주소 지정

명령어의 나머지 부분은 연산 실행에 필요한 데이터나 위치를 지정합니다. 오퍼랜드는 레지스터, 메모리 주소 또는 즉시 값(데이터 자체)일 수 있습니다.


주소 수에 따른 명령어 형식 분류

명령어 형식은 레지스터나 메모리 주소를 명시적으로 참조하는 오퍼랜드의 최대 수에 따라 분류되기도 합니다. 이러한 선택은 코드 밀도(code density)와 프로세서 복잡성에 깊은 영향을 미칩니다.

1. 0-주소 명령어 (스택 기반)

2. 1-주소 명령어 (누산기 기반)

3. 2-주소 명령어

4. 3-주소 명령어


설계 트레이드오프 및 제약 조건 📐

최적의 명령어 형식을 설계하는 것은 명령어 워드의 총 길이가 항상 유한하기 때문에 상충되는 목표들 사이의 균형을 맞추는 것을 포함합니다.

1. 명령어 길이 (고정 vs. 가변)

2. Opcode-오퍼랜드 균형

연산 코드 필드에 할당된 비트 수(명령어 수)는 오퍼랜드 필드에 사용 가능한 비트 수(레지스터 수, 즉시 데이터의 크기, 메모리 주소의 크기)를 직접적으로 제한합니다.

3. 주소 지정 방식

주소 지정 방식(CPU가 오퍼랜드의 최종 주소를 계산하는 방법)의 복잡성은 명령어 형식에 직접적인 영향을 미칩니다. 주소 지정 방식이 많으면 명령어가 사용할 모드를 지정하기 위해 별도의 필드를 할당해야 하며, 이는 오퍼랜드에 할당될 비트를 줄입니다. 이것이 RISC 아키텍처가 주소 지정 방식을 최소화하는 주된 이유입니다.

따라서 명령어 형식은 단순하고 빠른 하드웨어 설계와 유연하고 기능이 풍부한 명령어 집합 사이의 절충안을 물리적으로 구현한 것입니다.

references